/**
 * Generate code from /{{projectName}}-core/src/main/java/{{packageName}}/{{apis}}/dto/{{apiDtos@DEFAULT}}.java.hbs
 */
package cn.ibizlab.api.dto;

import java.util.*;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.alibaba.fastjson.annotation.JSONField;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import cn.ibizlab.util.domain.DTOBase;
import cn.ibizlab.util.domain.DTOClient;
import lombok.*;
import lombok.experimental.Accessors;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

/**
 * 登录日志[AuthLogDTO]
 *
 * @author generator
 */
@Getter
@Setter
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel("登录日志DTO")
public class AuthLogDTO extends DTOBase implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * id
     */
    @JsonProperty("id")
    @JSONField(name = "id")
    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty(value = "id", position = 0)
    private Long id;

    /**
     * 登录时间（数据库）
     */
    @JsonProperty("timestmp")
    @JSONField(name = "timestmp")
    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty(value = "登录时间（数据库）", position = 1)
    private Long timestmp;

    /**
     * 日志消息
     */
    @JsonProperty("message")
    @JSONField(name = "message")
    @ApiModelProperty(value = "日志消息", position = 2)
    private String message;

    /**
     * 日志名称
     */
    @JsonProperty("name")
    @JSONField(name = "name")
    @ApiModelProperty(value = "日志名称", position = 3)
    private String name;

    /**
     * 日志级别
     */
    @JsonProperty("log_level")
    @JSONField(name = "log_level")
    @ApiModelProperty(value = "日志级别", position = 4)
    private String logLevel;

    /**
     * 登录地址
     */
    @JsonProperty("ip_address")
    @JSONField(name = "ip_address")
    @ApiModelProperty(value = "登录地址", position = 5)
    private String ipAddress;

    /**
     * 登录状态
     */
    @JsonProperty("status")
    @JSONField(name = "status")
    @ApiModelProperty(value = "登录状态", position = 6)
    private Integer status;

    /**
     * 调用者文件名
     */
    @JsonProperty("caller_filename")
    @JSONField(name = "caller_filename")
    @ApiModelProperty(value = "调用者文件名", position = 7)
    private String callerFilename;

    /**
     * 调用者类名
     */
    @JsonProperty("caller_class")
    @JSONField(name = "caller_class")
    @ApiModelProperty(value = "调用者类名", position = 8)
    private String callerClass;

    /**
     * 调用者方法名
     */
    @JsonProperty("caller_method")
    @JSONField(name = "caller_method")
    @ApiModelProperty(value = "调用者方法名", position = 9)
    private String callerMethod;

    /**
     * 代码行
     */
    @JsonProperty("caller_line")
    @JSONField(name = "caller_line")
    @ApiModelProperty(value = "代码行", position = 10)
    private String callerLine;

    /**
     * 参数1
     */
    @JsonProperty("arg0")
    @JSONField(name = "arg0")
    @ApiModelProperty(value = "参数1", position = 11)
    private String arg0;

    /**
     * 参数2
     */
    @JsonProperty("arg1")
    @JSONField(name = "arg1")
    @ApiModelProperty(value = "参数2", position = 12)
    private String arg1;

    /**
     * 参数3
     */
    @JsonProperty("arg2")
    @JSONField(name = "arg2")
    @ApiModelProperty(value = "参数3", position = 13)
    private String arg2;

    /**
     * 参数4
     */
    @JsonProperty("arg3")
    @JSONField(name = "arg3")
    @ApiModelProperty(value = "参数4", position = 14)
    private String arg3;

    /**
     * 登录时间
     */
    @JsonProperty("time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
    @JSONField(name = "time" , format = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "登录时间", position = 15)
    private Date time;


    /**
     * 设置 [登录时间（数据库）]
     */
    public AuthLogDTO setTimestmp(Long timestmp) {
        this.timestmp = timestmp;
        this.modify("timestmp", timestmp);
        return this;
    }

    /**
     * 设置 [日志消息]
     */
    public AuthLogDTO setMessage(String message) {
        this.message = message;
        this.modify("message", message);
        return this;
    }

    /**
     * 设置 [日志名称]
     */
    public AuthLogDTO setName(String name) {
        this.name = name;
        this.modify("name", name);
        return this;
    }

    /**
     * 设置 [日志级别]
     */
    public AuthLogDTO setLogLevel(String logLevel) {
        this.logLevel = logLevel;
        this.modify("log_level", logLevel);
        return this;
    }

    /**
     * 设置 [登录地址]
     */
    public AuthLogDTO setIpAddress(String ipAddress) {
        this.ipAddress = ipAddress;
        this.modify("ip_address", ipAddress);
        return this;
    }

    /**
     * 设置 [登录状态]
     */
    public AuthLogDTO setStatus(Integer status) {
        this.status = status;
        this.modify("status", status);
        return this;
    }

    /**
     * 设置 [调用者文件名]
     */
    public AuthLogDTO setCallerFilename(String callerFilename) {
        this.callerFilename = callerFilename;
        this.modify("caller_filename", callerFilename);
        return this;
    }

    /**
     * 设置 [调用者类名]
     */
    public AuthLogDTO setCallerClass(String callerClass) {
        this.callerClass = callerClass;
        this.modify("caller_class", callerClass);
        return this;
    }

    /**
     * 设置 [调用者方法名]
     */
    public AuthLogDTO setCallerMethod(String callerMethod) {
        this.callerMethod = callerMethod;
        this.modify("caller_method", callerMethod);
        return this;
    }

    /**
     * 设置 [代码行]
     */
    public AuthLogDTO setCallerLine(String callerLine) {
        this.callerLine = callerLine;
        this.modify("caller_line", callerLine);
        return this;
    }

    /**
     * 设置 [参数1]
     */
    public AuthLogDTO setArg0(String arg0) {
        this.arg0 = arg0;
        this.modify("arg0", arg0);
        return this;
    }

    /**
     * 设置 [参数2]
     */
    public AuthLogDTO setArg1(String arg1) {
        this.arg1 = arg1;
        this.modify("arg1", arg1);
        return this;
    }

    /**
     * 设置 [参数3]
     */
    public AuthLogDTO setArg2(String arg2) {
        this.arg2 = arg2;
        this.modify("arg2", arg2);
        return this;
    }

    /**
     * 设置 [参数4]
     */
    public AuthLogDTO setArg3(String arg3) {
        this.arg3 = arg3;
        this.modify("arg3", arg3);
        return this;
    }

    /**
     * 设置 [登录时间]
     */
    public AuthLogDTO setTime(Date time) {
        this.time = time;
        this.modify("time", time);
        return this;
    }


}
